<!-- kind:binary;verdict:incompatible;affected:25.5;added:3;removed:9;type_problems_high:3;type_problems_medium:2;type_problems_low:1;method_problems_high:1;method_problems_medium:0;method_problems_low:0;checked_methods:105;checked_types:31;tool_version:2.1 -->
<!-- kind:source;verdict:incompatible;affected:25.5;added:3;removed:9;type_problems_high:3;type_problems_medium:2;type_problems_low:0;method_problems_high:1;method_problems_medium:0;method_problems_low:0;checked_methods:105;checked_types:31;tool_version:2.1 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="firebase-ui-auth, compatibility" />
<meta name="description" content="Compatibility report for the firebase-ui-auth library between 3.3.1 and 4.0.0 versions" />
<title>firebase-ui-auth: 3.3.1 to 4.0.0 compatibility report</title>
<style type="text/css">
body {
    font-family:Arial, sans-serif;
    background-color:White;
    color:Black;
}
hr {
    color:Black;
    background-color:Black;
    height:1px;
    border:0;
}
h1 {
    margin-bottom:0px;
    padding-bottom:0px;
    font-size:1.625em;
}
h2 {
    margin-bottom:0px;
    padding-bottom:0px;
    font-size:1.25em;
    white-space:nowrap;
}
div.symbols {
    color:#003E69;
}
div.symbols i {
    color:Brown;
}
span.section {
    font-weight:bold;
    cursor:pointer;
    color:#003E69;
    white-space:nowrap;
    margin-left:0.3125em;
}
span:hover.section {
    color:#336699;
}
span.sect_aff {
    cursor:pointer;
    padding-left:1.55em;
    font-size:0.875em;
    color:#cc3300;
}
span.ext {
    font-weight:100;
}
span.jar {
    color:#cc3300;
    font-size:0.875em;
    font-weight:bold;
}
div.jar_list {
    padding-left:0.4em;
    font-size:0.94em;
}
span.pkg_t {
    color:#408080;
    font-size:0.875em;
}
span.pkg {
    color:#408080;
    font-size:0.875em;
    font-weight:bold;
}
span.cname {
    color:Green;
    font-size:0.875em;
    font-weight:bold;
}
span.iname_b {
    font-weight:bold;
}
span.iname_a {
    color:#333333;
    font-weight:bold;
    font-size:0.94em;
}
span.sym_p {
    font-weight:normal;
    white-space:normal;
}
span.sym_pd {
    white-space:normal;
}
span.sym_p span, span.sym_pd span {
    white-space:nowrap;
}
span.attr {
    color:Black;
    font-weight:100;
}
span.deprecated {
    color:Red;
    font-weight:bold;
    font-family:Monaco, monospace;
}
div.affect {
    padding-left:1em;
    padding-bottom:10px;
    font-size:0.87em;
    font-style:italic;
    line-height:0.9em;
}
div.affected {
    padding-left:2em;
    padding-top:10px;
}
table.ptable {
    border-collapse:collapse;
    border:1px outset black;
    margin-left:0.95em;
    margin-top:3px;
    margin-bottom:3px;
    width:56.25em;
}
table.ptable td {
    border:1px solid Gray;
    padding:3px;
    font-size:0.875em;
    text-align:left;
    vertical-align:top;
    max-width:28em;
    word-wrap:break-word;
}
table.ptable th {
    background-color:#eeeeee;
    font-weight:bold;
    color:#333333;
    font-family:Verdana, Arial;
    font-size:0.875em;
    border:1px solid Gray;
    text-align:center;
    vertical-align:top;
    white-space:nowrap;
    padding:3px;
}
table.summary {
    border-collapse:collapse;
    border:1px outset black;
}
table.summary th {
    background-color:#eeeeee;
    font-weight:100;
    text-align:left;
    font-size:0.94em;
    white-space:nowrap;
    border:1px inset Gray;
    padding:3px;
}
table.summary td {
    text-align:right;
    white-space:nowrap;
    border:1px inset Gray;
    padding:3px 5px 3px 10px;
}
span.mngl {
    padding-left:1em;
    font-size:0.875em;
    cursor:text;
    color:#444444;
    font-weight:bold;
}
span.pleft {
    padding-left:2.5em;
}
span.color_p {
    font-style:italic;
    color:Brown;
}
span.param {
    font-style:italic;
}
span.focus_p {
    font-style:italic;
    background-color:#DCDCDC;
}
span.ttype {
    font-weight:100;
}
span.nowrap {
    white-space:nowrap;
}
span.value {
    white-space:nowrap;
    font-weight:bold;
}
.passed {
    background-color:#CCFFCC;
    font-weight:100;
}
.warning {
    background-color:#F4F4AF;
    font-weight:100;
}
.failed {
    background-color:#FFCCCC;
    font-weight:100;
}
.new {
    background-color:#C6DEFF;
    font-weight:100;
}

.compatible {
    background-color:#CCFFCC;
    font-weight:100;
}
.almost_compatible {
    background-color:#FFDAA3;
    font-weight:100;
}
.incompatible {
    background-color:#FFCCCC;
    font-weight:100;
}
.gray {
    background-color:#DCDCDC;
    font-weight:100;
}

.top_ref {
    font-size:0.69em;
}
.footer {
    font-size:0.8125em;
}
.tabset {
    float:left;
}
a.tab {
    border:1px solid Black;
    float:left;
    margin:0px 5px -1px 0px;
    padding:3px 5px 3px 5px;
    position:relative;
    font-size:0.875em;
    background-color:#DDD;
    text-decoration:none;
    color:Black;
}
a.disabled:hover
{
    color:Black;
    background:#EEE;
}
a.active:hover
{
    color:Black;
    background:White;
}
a.active {
    border-bottom-color:White;
    background-color:White;
}
div.tab {
    border-top:1px solid Black;
    padding:0px;
    width:100%;
    clear:both;
}

</style>
<script type="text/javascript" language="JavaScript">
<!--
function sC(header, id)
{
    e = document.getElementById(id);
    if(e.style.display == 'none')
    {
        e.style.display = 'block';
        e.style.visibility = 'visible';
        header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi, "[&minus;]");
    }
    else
    {
        e.style.display = 'none';
        e.style.visibility = 'hidden';
        header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi, "[+]");
    }
}
function initTabs()
{
    var url = window.location.href;
    if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1)
    {
        var tab1 = document.getElementById('BinaryID');
        var tab2 = document.getElementById('SourceID');
        tab1.className='tab disabled';
        tab2.className='tab active';
    }
    
    var sets = document.getElementsByTagName('div');
    for (var i = 0; i < sets.length; i++)
    {
        if (sets[i].className.indexOf('tabset') != -1)
        {
            var tabs = [];
            var links = sets[i].getElementsByTagName('a');
            for (var j = 0; j < links.length; j++)
            {
                if (links[j].className.indexOf('tab') != -1)
                {
                    tabs.push(links[j]);
                    links[j].tabs = tabs;
                    var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1));
                    //reset all tabs on start
                    if (tab)
                    {
                        if (links[j].className.indexOf('active')!=-1) {
                            tab.style.display = 'block';
                        }
                        else {
                            tab.style.display = 'none';
                        }
                    }
                    links[j].onclick = function()
                    {
                        var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1));
                        if (tab)
                        {
                            //reset all tabs before change
                            for (var k = 0; k < this.tabs.length; k++)
                            {
                                document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none';
                                this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled');
                            }
                            this.className = 'tab active';
                            tab.style.display = 'block';
                            // window.location.hash = this.id.replace('ID', '');
                            return false;
                        }
                    }
                }
            }
        }
    }
    
    if(url.indexOf('#')!=-1) {
        location.href=location.href;
    }
}

if (window.addEventListener) window.addEventListener('load', initTabs, false);
else if (window.attachEvent) window.attachEvent('onload', initTabs);

-->
</script>
</head>
<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a><h1>API compatibility report for the <span style='color:Blue;'>firebase-ui-auth</span> library between <span style='color:Red;'>3.3.1</span> and <span style='color:Red;'>4.0.0</span> versions</h1>
<br/><div class='tabset'>
<a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a>
<a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a>
</div>
<div id='BinaryTab' class='tab'>
<h2>Test Info</h2><hr/>
<table class='summary'>
<tr><th>Library Name</th><td>firebase-ui-auth</td></tr>
<tr><th>Version #1</th><td>3.3.1</td></tr>
<tr><th>Version #2</th><td>4.0.0</td></tr>
<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr>
</table>
<h2>Test Results</h2><hr/>
<table class='summary'>
<tr><th>Total JARs</th><td><a href='#Checked_Archives' style='color:Blue;'>1</a></td></tr>
<tr><th>Total Methods / Classes</th><td>105 / 31</td></tr>
<tr><th>Compatibility</th>
<td class='incompatible'>74.5%</td>
</tr>
</table>
<h2>Problem Summary</h2><hr/>
<table class='summary'>
<tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr>
<tr><th>Added Methods</th><td>-</td><td class='new'><a href='#Binary_Added' style='color:Blue;'>3</a></td></tr>
<tr><th>Removed Methods</th><td>High</td><td class='failed'><a href='#Binary_Removed' style='color:Blue;'>9</a></td></tr>
<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td class='failed'><a href='#Type_Binary_Problems_High' style='color:Blue;'>3</a></td></tr>
<tr><td>Medium</td><td class='failed'><a href='#Type_Binary_Problems_Medium' style='color:Blue;'>2</a></td></tr>
<tr><td>Low</td><td class='warning'><a href='#Type_Binary_Problems_Low' style='color:Blue;'>1</a></td></tr>
<tr><th rowspan='3'>Problems with<br/>Methods</th><td>High</td><td class='failed'><a href='#Method_Binary_Problems_High' style='color:Blue;'>1</a></td></tr>
<tr><td>Medium</td><td>0</td></tr>
<tr><td>Low</td><td>0</td></tr>
</table>

<a name='Binary_Added'></a><h2>Added Methods <span class='new'>&nbsp;3&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span>, <span class='cname'>CountryListSpinner.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.ui.phone</span><br/>
<span class="section" onclick="sC(this, 'c_1')">
CountryListSpinner.getSelectedCountryInfo&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;CountryInfo</span></span>
<br/>
<div id="c_1" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/ui/phone/CountryListSpinner.getSelectedCountryInfo:()Lcom/firebase/ui/auth/data/model/CountryInfo;</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_2')">
CountryListSpinner.onRestoreInstanceState&#160;<span class='sym_p'><span>(&#160;Parcelable <span class='color_p'>state</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;void</span></span>
<br/>
<div id="c_2" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/ui/phone/CountryListSpinner.onRestoreInstanceState:(Landroid/os/Parcelable;)V</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_3')">
CountryListSpinner.onSaveInstanceState&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;Parcelable</span></span>
<br/>
<div id="c_3" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/ui/phone/CountryListSpinner.onSaveInstanceState:()Landroid/os/Parcelable;</span><br/><br/></div>

<br/>
<a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Binary_Removed'></a><a name='Binary_Withdrawn'></a><h2>Removed Methods <span class='failed'>&nbsp;9&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span>, <span class='cname'>Builder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_4')">
AuthUI.IdpConfig.Builder.setParams&#160;<span class='sym_p'><span>(&#160;Bundle <span class='color_p'>params</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.IdpConfig.Builder</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_4" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.Builder.setParams:(Landroid/os/Bundle;)Lcom/firebase/ui/auth/AuthUI$IdpConfig$Builder;</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_5')">
AuthUI.IdpConfig.Builder.setPermissions&#160;<span class='sym_p'><span>(&#160;List&lt;String&gt; <span class='color_p'>permissions</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.IdpConfig.Builder</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_5" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.Builder.setPermissions:(Ljava/util/List;)Lcom/firebase/ui/auth/AuthUI$IdpConfig$Builder;</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>FacebookBuilder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_6')">
AuthUI.IdpConfig.FacebookBuilder.setPermissions&#160;<span class='sym_p'><span>(&#160;List <span class='color_p'>p1</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.IdpConfig.Builder</span></span>
<br/>
<div id="c_6" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.FacebookBuilder.setPermissions:(Ljava/util/List;)Lcom/firebase/ui/auth/AuthUI$IdpConfig$Builder;</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>IdpConfig.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_7')">
AuthUI.IdpConfig.getScopes&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;List&lt;String&gt;</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_7" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.getScopes:()Ljava/util/List;</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>IdpResponse.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_8')">
IdpResponse.getErrorCode&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;int</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_8" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/IdpResponse.getErrorCode:()I</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>PlayServicesHelper.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.util</span><br/>
<span class="section" onclick="sC(this, 'c_9')">
PlayServicesHelper.getGoogleApiAvailability&#160;<span class='sym_p'>(&#160;)</span> <span class='attr'>[static]</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;GoogleApiAvailability</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_9" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/util/PlayServicesHelper.getGoogleApiAvailability:()Lcom/google/android/gms/common/GoogleApiAvailability;</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_10')">
PlayServicesHelper.makePlayServicesAvailable&#160;<span class='sym_p'><span>(&#160;Activity <span class='color_p'>activity</span></span>, <span>int <span class='color_p'>requestCode</span></span>, <span>DialogInterface.OnCancelListener <span class='color_p'>cancelListener</span></span>&#160;)</span> <span class='attr'>[static]</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;boolean</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_10" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/util/PlayServicesHelper.makePlayServicesAvailable:(Landroid/app/Activity;ILandroid/content/DialogInterface$OnCancelListener;)Z</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_11')">
PlayServicesHelper.PlayServicesHelper&#160;<span class='sym_p'>(&#160;)</span></span>
<br/>
<div id="c_11" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/util/PlayServicesHelper.&quot;&lt;init&gt;&quot;:()V</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>SignInIntentBuilder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_12')">
AuthUI.SignInIntentBuilder.setAllowNewEmailAccounts&#160;<span class='sym_p'><span>(&#160;boolean <span class='color_p'>enabled</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.SignInIntentBuilder</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_12" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.SignInIntentBuilder.setAllowNewEmailAccounts:(Z)Lcom/firebase/ui/auth/AuthUI$SignInIntentBuilder;</span><br/><br/></div>

<br/>
<a class='top_ref' href='#Top'>to the top</a><br/>
<a name='High_Risk_Binary_Problems'></a><a name='Type_Binary_Problems_High'></a>
<h2>Problems with Data Types, High Severity <span class='failed'>&nbsp;3&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_13')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> AuthUI.IdpConfig <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_13" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>This class became <b>final</b>.</td>
<td>A client program may be interrupted by <b>VerifyError</b> exception.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_14')">
[+] affected methods: 11 (10.5%)</span>
<div id="c_14" style="display:none;">
<div class='affected'><span class='iname_a'>AuthUI.IdpConfig.Builder.build&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>Return value  of this method is of type 'AuthUI.IdpConfig'.</div>
<span class='iname_a'>AuthUI.IdpConfig.describeContents&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.equals&#160;<span class='sym_p'><span>(&#160;Object <i>o</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.getParams&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.getProviderId&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.GoogleBuilder.build&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>Return value  of this method is of type 'AuthUI.IdpConfig'.</div>
<span class='iname_a'>AuthUI.IdpConfig.hashCode&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.toString&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.writeToParcel&#160;<span class='sym_p'><span>(&#160;Parcel <i>parcel</i></span>, <span>int <i>i</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>data.remote.GoogleSignInHandler.Params.GoogleSignInHandler.Params&#160;<span class='sym_p'><span>(&#160;AuthUI.IdpConfig <span class='focus_p'>config</span></span>&#160;)</span></span><br/><div class='affect'>1st parameter 'config'  of this method is of type 'AuthUI.IdpConfig'.</div>
 <b>...</b>
<br/>
</div></div>
<br/><br/></div>

<span class="section" onclick="sC(this, 'c_15')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> ResultCodes <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_15" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>This class has been removed.</td>
<td>A client program may be interrupted by <b>NoClassDefFoundError</b> exception.</td>
</tr>
</table><br/><br/></div>

<br/><span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.util</span><br/>
<span class="section" onclick="sC(this, 'c_16')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> PlayServicesHelper <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_16" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>This class has been removed.</td>
<td>A client program may be interrupted by <b>NoClassDefFoundError</b> exception.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_17')">
[+] affected methods: 3 (2.9%)</span>
<div id="c_17" style="display:none;">
<div class='affected'><span class='iname_a'>PlayServicesHelper.PlayServicesHelper&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This constructor is from 'PlayServicesHelper' class.</div>
<span class='iname_a'>PlayServicesHelper.getGoogleApiAvailability&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'PlayServicesHelper' class.</div>
<span class='iname_a'>PlayServicesHelper.makePlayServicesAvailable&#160;<span class='sym_p'><span>(&#160;Activity <i>activity</i></span>, <span>int <i>requestCode</i></span>, <span>DialogInterface.OnCancelListener <i>cancelListener</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'PlayServicesHelper' class.</div>
</div></div>
<br/><br/></div>

<br/><a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Method_Binary_Problems_High'></a>
<h2>Problems with Methods, High Severity <span class='failed'>&nbsp;1&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span>, <span class='cname'>Builder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_18')">
<span class='ext'>[+]</span> AuthUI.IdpConfig.Builder.AuthUI.IdpConfig.Builder&#160;<span class='sym_p'><span>(&#160;String <span class='color_p'>providerId</span></span>&#160;)</span> <span class='deprecated'>*DEPRECATED*</span> <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_18" style="display:none;">
<span class='mngl pleft'>com/firebase/ui/auth/AuthUI.IdpConfig.Builder.&quot;&lt;init&gt;&quot;:(Ljava/lang/String;)V</span><br/>
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>Access level has been changed from <b>public</b> to <b>protected</b>.</td>
<td>A client program may be interrupted by <b>IllegalAccessError</b> exception.</td>
</tr>
</table><br/></div>

<br/><a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Medium_Risk_Binary_Problems'></a><a name='Type_Binary_Problems_Medium'></a>
<h2>Problems with Data Types, Medium Severity <span class='failed'>&nbsp;2&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.ui.credentials</span><br/>
<span class="section" onclick="sC(this, 'c_19')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> CredentialSaveActivity <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_19" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>Superclass has been changed from <b>com.firebase.ui.auth.ui.HelperActivityBase</b> to <b>com.firebase.ui.auth.ui.InvisibleActivityBase</b>.</td>
<td>1) Access of a client program to the fields or methods of the old super-class may be interrupted by <b>NoSuchFieldError</b> or <b>NoSuchMethodError</b> exceptions.<br/>2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class and cause <b>IncompatibleClassChangeError</b> exception.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_20')">
[+] affected methods: 4 (3.8%)</span>
<div id="c_20" style="display:none;">
<div class='affected'><span class='iname_a'>CredentialSaveActivity.CredentialSaveActivity&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This constructor is from 'CredentialSaveActivity' class.</div>
<span class='iname_a'>CredentialSaveActivity.createIntent&#160;<span class='sym_p'><span>(&#160;Context <i>context</i></span>, <span>FlowParameters <i>flowParams</i></span>, <span>Credential <i>credential</i></span>, <span>IdpResponse <i>response</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'CredentialSaveActivity' class.</div>
<span class='iname_a'>CredentialSaveActivity.onActivityResult&#160;<span class='sym_p'><span>(&#160;int <i>requestCode</i></span>, <span>int <i>resultCode</i></span>, <span>Intent <i>data</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'CredentialSaveActivity' class.</div>
<span class='iname_a'>CredentialSaveActivity.onCreate&#160;<span class='sym_p'><span>(&#160;Bundle <i>savedInstanceState</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'CredentialSaveActivity' class.</div>
</div></div>
<br/><br/></div>

<br/><span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.ui.idp</span><br/>
<span class="section" onclick="sC(this, 'c_21')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> SingleSignInActivity <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_21" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>Superclass has been changed from <b>com.firebase.ui.auth.ui.HelperActivityBase</b> to <b>com.firebase.ui.auth.ui.InvisibleActivityBase</b>.</td>
<td>1) Access of a client program to the fields or methods of the old super-class may be interrupted by <b>NoSuchFieldError</b> or <b>NoSuchMethodError</b> exceptions.<br/>2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class and cause <b>IncompatibleClassChangeError</b> exception.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_22')">
[+] affected methods: 4 (3.8%)</span>
<div id="c_22" style="display:none;">
<div class='affected'><span class='iname_a'>SingleSignInActivity.SingleSignInActivity&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This constructor is from 'SingleSignInActivity' class.</div>
<span class='iname_a'>SingleSignInActivity.createIntent&#160;<span class='sym_p'><span>(&#160;Context <i>context</i></span>, <span>FlowParameters <i>flowParams</i></span>, <span>User <i>user</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'SingleSignInActivity' class.</div>
<span class='iname_a'>SingleSignInActivity.onActivityResult&#160;<span class='sym_p'><span>(&#160;int <i>requestCode</i></span>, <span>int <i>resultCode</i></span>, <span>Intent <i>data</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'SingleSignInActivity' class.</div>
<span class='iname_a'>SingleSignInActivity.onCreate&#160;<span class='sym_p'><span>(&#160;Bundle <i>savedInstanceState</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'SingleSignInActivity' class.</div>
</div></div>
<br/><br/></div>

<br/><a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Low_Risk_Binary_Problems'></a><a name='Type_Binary_Problems_Low'></a>
<h2>Problems with Data Types, Low Severity <span class='warning'>&nbsp;1&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_23')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> BuildConfig <span class='warning'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_23" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>Value of final field <b>VERSION_NAME</b> of type <b>java.lang.String</b> has been changed from <b>&quot;3.3.1&quot;</b> to <b>&quot;4.0.0-SNAPSHOT&quot;</b>.</td>
<td>Old value of the field will be inlined to the client code at compile-time and will be used instead of a new one.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_24')">
[+] affected methods: 1 (1%)</span>
<div id="c_24" style="display:none;">
<div class='affected'><span class='iname_a'>BuildConfig.BuildConfig&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This constructor is from 'BuildConfig' class.</div>
</div></div>
<br/><br/></div>

<br/><a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Checked_Archives'></a><h2>Java Archives <span class='gray'>&nbsp;1&nbsp;</span></h2>
<hr/><div class='jar_list'>
classes.jar<br/>
</div><br/><a class='top_ref' href='#Top'>to the top</a><br/>
<br/><br/><br/></div><div id='SourceTab' class='tab'>
<h2>Test Info</h2><hr/>
<table class='summary'>
<tr><th>Library Name</th><td>firebase-ui-auth</td></tr>
<tr><th>Version #1</th><td>3.3.1</td></tr>
<tr><th>Version #2</th><td>4.0.0</td></tr>
<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr>
</table>
<h2>Test Results</h2><hr/>
<table class='summary'>
<tr><th>Total JARs</th><td><a href='#Checked_Archives' style='color:Blue;'>1</a></td></tr>
<tr><th>Total Methods / Classes</th><td>105 / 31</td></tr>
<tr><th>Compatibility</th>
<td class='incompatible'>74.5%</td>
</tr>
</table>
<h2>Problem Summary</h2><hr/>
<table class='summary'>
<tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr>
<tr><th>Added Methods</th><td>-</td><td class='new'><a href='#Source_Added' style='color:Blue;'>3</a></td></tr>
<tr><th>Removed Methods</th><td>High</td><td class='failed'><a href='#Source_Removed' style='color:Blue;'>9</a></td></tr>
<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td class='failed'><a href='#Type_Source_Problems_High' style='color:Blue;'>3</a></td></tr>
<tr><td>Medium</td><td class='failed'><a href='#Type_Source_Problems_Medium' style='color:Blue;'>2</a></td></tr>
<tr><td>Low</td><td>0</td></tr>
<tr><th rowspan='3'>Problems with<br/>Methods</th><td>High</td><td class='failed'><a href='#Method_Source_Problems_High' style='color:Blue;'>1</a></td></tr>
<tr><td>Medium</td><td>0</td></tr>
<tr><td>Low</td><td>0</td></tr>
</table>

<a name='Source_Added'></a><h2>Added Methods <span class='new'>&nbsp;3&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span>, <span class='cname'>CountryListSpinner.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.ui.phone</span><br/>
<span class="section" onclick="sC(this, 'c_25')">
CountryListSpinner.getSelectedCountryInfo&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;CountryInfo</span></span>
<br/>
<div id="c_25" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/ui/phone/CountryListSpinner.getSelectedCountryInfo:()Lcom/firebase/ui/auth/data/model/CountryInfo;</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_26')">
CountryListSpinner.onRestoreInstanceState&#160;<span class='sym_p'><span>(&#160;Parcelable <span class='color_p'>state</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;void</span></span>
<br/>
<div id="c_26" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/ui/phone/CountryListSpinner.onRestoreInstanceState:(Landroid/os/Parcelable;)V</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_27')">
CountryListSpinner.onSaveInstanceState&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;Parcelable</span></span>
<br/>
<div id="c_27" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/ui/phone/CountryListSpinner.onSaveInstanceState:()Landroid/os/Parcelable;</span><br/><br/></div>

<br/>
<a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Source_Removed'></a><a name='Source_Withdrawn'></a><h2>Removed Methods <span class='failed'>&nbsp;9&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span>, <span class='cname'>Builder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_28')">
AuthUI.IdpConfig.Builder.setParams&#160;<span class='sym_p'><span>(&#160;Bundle <span class='color_p'>params</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.IdpConfig.Builder</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_28" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.Builder.setParams:(Landroid/os/Bundle;)Lcom/firebase/ui/auth/AuthUI$IdpConfig$Builder;</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_29')">
AuthUI.IdpConfig.Builder.setPermissions&#160;<span class='sym_p'><span>(&#160;List&lt;String&gt; <span class='color_p'>permissions</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.IdpConfig.Builder</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_29" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.Builder.setPermissions:(Ljava/util/List;)Lcom/firebase/ui/auth/AuthUI$IdpConfig$Builder;</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>FacebookBuilder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_30')">
AuthUI.IdpConfig.FacebookBuilder.setPermissions&#160;<span class='sym_p'><span>(&#160;List <span class='color_p'>p1</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.IdpConfig.Builder</span></span>
<br/>
<div id="c_30" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.FacebookBuilder.setPermissions:(Ljava/util/List;)Lcom/firebase/ui/auth/AuthUI$IdpConfig$Builder;</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>IdpConfig.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_31')">
AuthUI.IdpConfig.getScopes&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;List&lt;String&gt;</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_31" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.IdpConfig.getScopes:()Ljava/util/List;</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>IdpResponse.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_32')">
IdpResponse.getErrorCode&#160;<span class='sym_p'>(&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;int</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_32" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/IdpResponse.getErrorCode:()I</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>PlayServicesHelper.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.util</span><br/>
<span class="section" onclick="sC(this, 'c_33')">
PlayServicesHelper.getGoogleApiAvailability&#160;<span class='sym_p'>(&#160;)</span> <span class='attr'>[static]</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;GoogleApiAvailability</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_33" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/util/PlayServicesHelper.getGoogleApiAvailability:()Lcom/google/android/gms/common/GoogleApiAvailability;</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_34')">
PlayServicesHelper.makePlayServicesAvailable&#160;<span class='sym_p'><span>(&#160;Activity <span class='color_p'>activity</span></span>, <span>int <span class='color_p'>requestCode</span></span>, <span>DialogInterface.OnCancelListener <span class='color_p'>cancelListener</span></span>&#160;)</span> <span class='attr'>[static]</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;boolean</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_34" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/util/PlayServicesHelper.makePlayServicesAvailable:(Landroid/app/Activity;ILandroid/content/DialogInterface$OnCancelListener;)Z</span><br/><br/></div>

<span class="section" onclick="sC(this, 'c_35')">
PlayServicesHelper.PlayServicesHelper&#160;<span class='sym_p'>(&#160;)</span></span>
<br/>
<div id="c_35" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/util/PlayServicesHelper.&quot;&lt;init&gt;&quot;:()V</span><br/><br/></div>

<br/>
<span class='jar'>classes.jar</span>, <span class='cname'>SignInIntentBuilder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_36')">
AuthUI.SignInIntentBuilder.setAllowNewEmailAccounts&#160;<span class='sym_p'><span>(&#160;boolean <span class='color_p'>enabled</span></span>&#160;)</span><span class='sym_p nowrap'> &#160;<b>:</b>&#160;&#160;AuthUI.SignInIntentBuilder</span> <span class='deprecated'>*DEPRECATED*</span></span>
<br/>
<div id="c_36" style="display:none;">
<span class='mngl'>com/firebase/ui/auth/AuthUI.SignInIntentBuilder.setAllowNewEmailAccounts:(Z)Lcom/firebase/ui/auth/AuthUI$SignInIntentBuilder;</span><br/><br/></div>

<br/>
<a class='top_ref' href='#Top'>to the top</a><br/>
<a name='High_Risk_Source_Problems'></a><a name='Type_Source_Problems_High'></a>
<h2>Problems with Data Types, High Severity <span class='failed'>&nbsp;3&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_37')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> AuthUI.IdpConfig <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_37" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>This class became <b>final</b>.</td>
<td>Recompilation of a client program may be terminated with the message: cannot inherit from final <b>AuthUI.IdpConfig</b>.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_38')">
[+] affected methods: 11 (10.5%)</span>
<div id="c_38" style="display:none;">
<div class='affected'><span class='iname_a'>AuthUI.IdpConfig.Builder.build&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>Return value  of this method is of type 'AuthUI.IdpConfig'.</div>
<span class='iname_a'>AuthUI.IdpConfig.describeContents&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.equals&#160;<span class='sym_p'><span>(&#160;Object <i>o</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.getParams&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.getProviderId&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.GoogleBuilder.build&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>Return value  of this method is of type 'AuthUI.IdpConfig'.</div>
<span class='iname_a'>AuthUI.IdpConfig.hashCode&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.toString&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>AuthUI.IdpConfig.writeToParcel&#160;<span class='sym_p'><span>(&#160;Parcel <i>parcel</i></span>, <span>int <i>i</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'AuthUI.IdpConfig' class.</div>
<span class='iname_a'>data.remote.GoogleSignInHandler.Params.GoogleSignInHandler.Params&#160;<span class='sym_p'><span>(&#160;AuthUI.IdpConfig <span class='focus_p'>config</span></span>&#160;)</span></span><br/><div class='affect'>1st parameter 'config'  of this method is of type 'AuthUI.IdpConfig'.</div>
 <b>...</b>
<br/>
</div></div>
<br/><br/></div>

<span class="section" onclick="sC(this, 'c_39')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> ResultCodes <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_39" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>This class has been removed.</td>
<td>Recompilation of a client program may be terminated with the message: cannot find class <b>ResultCodes</b>.</td>
</tr>
</table><br/><br/></div>

<br/><span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.util</span><br/>
<span class="section" onclick="sC(this, 'c_40')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> PlayServicesHelper <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_40" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>This class has been removed.</td>
<td>Recompilation of a client program may be terminated with the message: cannot find class <b>PlayServicesHelper</b>.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_41')">
[+] affected methods: 3 (2.9%)</span>
<div id="c_41" style="display:none;">
<div class='affected'><span class='iname_a'>PlayServicesHelper.PlayServicesHelper&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This constructor is from 'PlayServicesHelper' class.</div>
<span class='iname_a'>PlayServicesHelper.getGoogleApiAvailability&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This method is from 'PlayServicesHelper' class.</div>
<span class='iname_a'>PlayServicesHelper.makePlayServicesAvailable&#160;<span class='sym_p'><span>(&#160;Activity <i>activity</i></span>, <span>int <i>requestCode</i></span>, <span>DialogInterface.OnCancelListener <i>cancelListener</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'PlayServicesHelper' class.</div>
</div></div>
<br/><br/></div>

<br/><a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Method_Source_Problems_High'></a>
<h2>Problems with Methods, High Severity <span class='failed'>&nbsp;1&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span>, <span class='cname'>Builder.class</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth</span><br/>
<span class="section" onclick="sC(this, 'c_42')">
<span class='ext'>[+]</span> AuthUI.IdpConfig.Builder.AuthUI.IdpConfig.Builder&#160;<span class='sym_p'><span>(&#160;String <span class='color_p'>providerId</span></span>&#160;)</span> <span class='deprecated'>*DEPRECATED*</span> <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_42" style="display:none;">
<span class='mngl pleft'>com/firebase/ui/auth/AuthUI.IdpConfig.Builder.&quot;&lt;init&gt;&quot;:(Ljava/lang/String;)V</span><br/>
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>Access level has been changed from <b>public</b> to <b>protected</b>.</td>
<td>Recompilation of a client program may be terminated with the message: <span class='iname_b'>AuthUI.IdpConfig.Builder&#160;<span class='sym_pd'><span>(&#160;String</span>&#160;)</span></span> has <b>protected</b> access in <b>AuthUI.IdpConfig.Builder</b>.</td>
</tr>
</table><br/></div>

<br/><a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Medium_Risk_Source_Problems'></a><a name='Type_Source_Problems_Medium'></a>
<h2>Problems with Data Types, Medium Severity <span class='failed'>&nbsp;2&nbsp;</span></h2><hr/>
<span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.ui.credentials</span><br/>
<span class="section" onclick="sC(this, 'c_43')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> CredentialSaveActivity <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_43" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>Superclass has been changed from <b>com.firebase.ui.auth.ui.HelperActivityBase</b> to <b>com.firebase.ui.auth.ui.InvisibleActivityBase</b>.</td>
<td>1) Recompilation of a client program may be terminated with the message: cannot find variable (or method) in <b>CredentialSaveActivity</b>.<br/>2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_44')">
[+] affected methods: 4 (3.8%)</span>
<div id="c_44" style="display:none;">
<div class='affected'><span class='iname_a'>CredentialSaveActivity.CredentialSaveActivity&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This constructor is from 'CredentialSaveActivity' class.</div>
<span class='iname_a'>CredentialSaveActivity.createIntent&#160;<span class='sym_p'><span>(&#160;Context <i>context</i></span>, <span>FlowParameters <i>flowParams</i></span>, <span>Credential <i>credential</i></span>, <span>IdpResponse <i>response</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'CredentialSaveActivity' class.</div>
<span class='iname_a'>CredentialSaveActivity.onActivityResult&#160;<span class='sym_p'><span>(&#160;int <i>requestCode</i></span>, <span>int <i>resultCode</i></span>, <span>Intent <i>data</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'CredentialSaveActivity' class.</div>
<span class='iname_a'>CredentialSaveActivity.onCreate&#160;<span class='sym_p'><span>(&#160;Bundle <i>savedInstanceState</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'CredentialSaveActivity' class.</div>
</div></div>
<br/><br/></div>

<br/><span class='jar'>classes.jar</span><br/>
<span class='pkg_t'>package</span> <span class='pkg'>com.firebase.ui.auth.ui.idp</span><br/>
<span class="section" onclick="sC(this, 'c_45')">
<span class='ext'>[+]</span> <span class='ttype'>class</span> SingleSignInActivity <span class='failed'>&nbsp;1&nbsp;</span></span>
<br/>
<div id="c_45" style="display:none;">
<table class='ptable'><tr><th width='2%'></th><th width='47%'>Change</th><th>Effect</th></tr><tr>
<th>1</th>
<td>Superclass has been changed from <b>com.firebase.ui.auth.ui.HelperActivityBase</b> to <b>com.firebase.ui.auth.ui.InvisibleActivityBase</b>.</td>
<td>1) Recompilation of a client program may be terminated with the message: cannot find variable (or method) in <b>SingleSignInActivity</b>.<br/>2) A static field from a super-interface of a client class may hide a field (with the same name) inherited from new super-class. Recompilation of a client class may be terminated with the message: reference to variable is ambiguous.</td>
</tr>
</table><span class="sect_aff" onclick="sC(this, 'c_46')">
[+] affected methods: 4 (3.8%)</span>
<div id="c_46" style="display:none;">
<div class='affected'><span class='iname_a'>SingleSignInActivity.SingleSignInActivity&#160;<span class='sym_p'>(&#160;)</span></span><br/><div class='affect'>This constructor is from 'SingleSignInActivity' class.</div>
<span class='iname_a'>SingleSignInActivity.createIntent&#160;<span class='sym_p'><span>(&#160;Context <i>context</i></span>, <span>FlowParameters <i>flowParams</i></span>, <span>User <i>user</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'SingleSignInActivity' class.</div>
<span class='iname_a'>SingleSignInActivity.onActivityResult&#160;<span class='sym_p'><span>(&#160;int <i>requestCode</i></span>, <span>int <i>resultCode</i></span>, <span>Intent <i>data</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'SingleSignInActivity' class.</div>
<span class='iname_a'>SingleSignInActivity.onCreate&#160;<span class='sym_p'><span>(&#160;Bundle <i>savedInstanceState</i></span>&#160;)</span></span><br/><div class='affect'>This method is from 'SingleSignInActivity' class.</div>
</div></div>
<br/><br/></div>

<br/><a class='top_ref' href='#Top'>to the top</a><br/>
<a name='Checked_Archives'></a><h2>Java Archives <span class='gray'>&nbsp;1&nbsp;</span></h2>
<hr/><div class='jar_list'>
classes.jar<br/>
</div><br/><a class='top_ref' href='#Top'>to the top</a><br/>
<br/><br/><br/></div><hr/><div class='footer' align='right'><i>Generated by <a href='https://github.com/lvc/japi-compliance-checker'>Java API Compliance Checker</a> 2.1 &#160;</i></div><br/>
</body></html>